6.5 列数据设置为行索引
如果需要将一个DateFrame表格的列数据设置为该表的行索引,则可以使用df.set_index()
函数,可以将单列或者多列设置为行索引。如果是多列设置为行索引,那么自然就是分层索引,结构如下:
df.set_index(keys,drop=True,append=False,inplace=False,verify_inregity=False)
keys :指定要设置为行索引的列,列的表现形式有列名,Series,序列,数组,迭代器。也可以是单列,也可以是多列,如果是多列,则将多列放置在列表
drop :是否需要删除用作新索引的列,也就是设置为行索引后的列数据是否保留,默认是删除不保留。
append :是否将列添加到现有行索引,True为添加,False为完全替换,默认为False;
inplace :是否就地修改DateFrame表格,而不是创建新的DateFrame表格
verify_integity :检查新索引是否存在重复项,设置为False将提高此方法的性能。
import pandas as pd
df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\测试素材.列索引设置为行索引.xlsx" )
df=df.set_index([ "部门" , #使用列名
df.籍贯.str[ -2 :], #使用Series
df.编号.str[ 3 :], #使用Series
df.编号.str[ 3 :].to_numpy(), #使用数组,不会显示列名
pd.date_range( "2024-3-1","2024-3-5" ), #使用时间序列,不会显示列名
iter(range( 101,106 )) #加iter变成一个迭代器,就可以了
])
print (df)
返回:
编号 | 姓名 | 性别 | 籍贯 | ||||||
---|---|---|---|---|---|---|---|---|---|
部门 | 籍贯 | 编号 | |||||||
销售部 | 成都 | 01 | 01 | 2024-03-01 | 101 | NED01 | 张三 | 男 | 四川-成都 |
南昌 | 02 | 02 | 2024-03-02 | 102 | NED02 | 李四 | 女 | 江西-南昌 | |
财务部 | 株洲 | 03 | 03 | 2024-03-03 | 103 | NED03 | 王麻子 | 男 | 湖南-株洲 |
自贡 | 04 | 04 | 2024-03-04 | 104 | NED04 | 小曾 | 女 | 四川-自贡 | |
深圳 | 05 | 05 | 2024-03-05 | 105 | NED05 | 小志 | 男 | 广东-深圳 |